# This file is part of OrangeSpider. OrangeSpider is a meta model based
# development tool.
# 
# OrangeSpider is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# 
# OrangeSpider is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with OrangeSpider.  If not, see <http://www.gnu.org/licenses/>.
#
# Copyright 2009 Stefan Nikolaus <OrangeSpiderMaster@googlemail.com>

# Define interfaces
# Interfaces can be implemented by every component
# Every interface has a name, beginning with "I"
# These interfaces are pure convention

# Name: "Spider.IProject"
# Interface: used by the project to open components
class IProject:
    def __init__(self):
        pass
    def open(self, project, item):
        pass

# Name: "Spider.IManagedComponent"
# Interface: used by the component manager to register the
# component in the component repository
class IManagedComponent:
    def __init__(self):
        pass

    # This static method is called from the component manager
    # Returns a Class "ComponentType" from the metamodel "SpiderCOMP"
    @staticmethod
    def setupComponentType(rSpiderCOMP):
        pass

class IVisitor:
    def __init__(self):
        pass
    def visitMetaModel(self, mm):
        pass
    def visitMetaClass(self, mc):
        pass
    def visitMetaAssoc(self, ma):
        pass
    def visitMetaProperty(self, mp):
        pass
    def visitMetaType(self, mt):
        pass
    def visitMetaAtom(self, mat):
        pass
    def visitClass(self, c):
        pass
    def visitAssoc(self, a):
        pass
    
